\section{Desarrollo}
\subsection{Modelo Planteado}
Dada la imagen pgm, se carga en una matriz para lograr un mejor manejo de la informaci\'on. Dados dos puntos $P_1 = (x_0,y_0) y P_2 = (x_1,y_1)$ se forma e rectangulo donde $P_1$ es el v\'ertice izquierdo superior y  $P_2$ es el v\'ertice opesto.\\

En la siguiente figura se muestra como se forma el rect\'angulo a partir de los puntos.

\begin{center} \includegraphics{./imagenes/rectangulo.jpg} \end{center}

El rect\'angulo representa el lugar donde esta el objeto no deseado de la imagen. El objetivo es eliminar este objeto de la imagen, para ello se cambiara el valor de los pixeles donde esta la imagen.\\

Para cambiar el valor de los pixeles, se itera sobre las filas en las que esta el objeto no deseado. Para cada fila se genera un conjunto de puntos (\textit{x},\textit{y}) \textit{x} representa la posici'on del pixel en la fila e \textit{y} el valor del pixel. En este conjunto no se tiene en cuenta a los pixeles que en donde esta el objeto no deseado.\\

Sea la fila [$v_1$, $v_2$, $v_k$ $v_{k+1}$, \ldots, $v_{k+i}$, \ldots, $v_n$] en los pixeles que estan entre \textit{k} y \textit{k+i} esta el objeto no deseado, el conjunto de puntos es \{(1,$v_1$), (2,$v_2$), \ldots, (k-1,$v_{k-1}$), (k+i+1,$v_{k+i+1}$), \ldots, (n,$v_n$)\}\\
	

Interpolamos este conjunto de puntos mediante Splines de grado 3:\\

$$
S(x) = 
\left\{
\begin{array}{cc}

S_1(x) & 1 \leq x < 2 \\
S_2(x) & 2 \leq x < 3 \\
\vdots & \vdots \\
S_{k-1}(x) & k-1 \leq x < k+i+1 \\
S_{k+i+1}(x) & k+i+1 \leq x < k+i+2 \\
\vdots & \vdots \\
S_n(x) & n \leq x < n+1 \\
\end{array}
\right.
$$

El \'ultimo paso es asignarle el valor a los pixeles k, \ldots, k+i, se evalua el polinomio $S_{k-1}$ para cada uno y se le asigna el resultado en la fila.
	
\subsection{Implementaci\'on}

Para la implementaci\'on se usaron las siguientes clases:

\begin{enumerate}
    \item MatrizAbstracta \label{MatrizAbstracta}
    \item Matriz \label{Matriz}
    \item Imagenes \label{Imagenes}
    \item Spline \label{Spline}
\end{enumerate}

\ref{MatrizAbstracta}  Se planteo como una clase base para el desarrollo de las matrices a lo largo de los trabajos practicos. El  objetivo era lograr una abstracci\'on de los algoritmos que se implementen.

\ref{Matriz}  Es una implementaci\'on de una MatrizAbstracta particular, la cual se representa con un vector de double. La funcionalidad que provee es la aquella que se necesitaba para el tp, como por ejemplo trasponer una matriz, multiplicaci\'on entre matrices, swapColumna, etc.

\ref{Imagenes} Esta clase provee la abstracci\'on de una imagen. Su estructura interna utiliza una matriz para tomar los datos de la imagen pgm. Tambi\'en por un tema de simplicidad pusimos la matriz de la imagen original y la matriz de la imagen modificada, esto facilitaba el calculo del error cuadratico medio. Da la oportunidad de escribir una imagen con el m\'etodo escribirImagen, y obtener las filas de la imagen con el m\'etodo filasDeLaImagen, tambi\'en fue necesario agregar mas m\'etodos para hacer mas entendible el c\'odigo.

\ref{Spline} Es para calcular la funci\'on $S(x)$ antes mencionada, como entrada recibe un vector de valores que representan $x$ y otro que representa $y$. Se modifica un par\'ametro que representa una matriz, la cual tiene todos los coeficientes de cada polinomio de spline. Tambi\'en tiene una funci\'on llamada calcularValor a la cual se le pasa la matriz que representa la funci\'on $S(x)$, la diferencia de $(x-x_0)$ del polinomio de splines y el n\'umero de polinomio que se usa, termina retornando el valor de la interpolaci\'on con el spline.

\newpage
